<?php
// Vérification des identifiants
function connexion_site($id, $mdp) {
	global $connexion;
	$requete = 'SELECT * FROM utilisateurs WHERE identifiant = "' . $id . '" AND password = "' . sha1 ( $mdp ) . '";';
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if ($result->fetch ()){
		return true;
	}else
		return false;
	$result->closeCursor ();
}

// Retourne 1 pour admin ou 2 pour développeur
function utilCoTypeC($id) {
	global $connexion;
	$vretour = '';
	$requete = 'SELECT idtype_compte FROM utilisateurs WHERE identifiant = "' . $id . '";';
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	while ( $data = $result->fetch () ) {
		$vretour = $data->idtype_compte;
	}
	$result->closeCursor ();
	return $vretour;
}

// administration.php

// Retourne les type de compte dans une listbox
function type_compte() {
	global $connexion;
	$vretour = "";
	$i = 1;
	$requete = 'SELECT type FROM type_compte;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	if (! $result) {
		$vretour .= "<option value=0>Aucun résultat</option>";
	} else {
		foreach ( $result as $OneRow ) { // on parcourt toutes les lignes une par une
			$vretour .= "<option value=" . $i . ">" . $OneRow [0] . "</option>";
			$i ++;
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Retourne tous les comptes disponibles sur la BDD
function gest_compte() {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT u.identifiant, t.type FROM utilisateurs u INNER JOIN type_compte t ON t.id = u.idtype_compte ORDER BY u.id;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucun compte existant</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de l'enregistrement en cours
			$vretour .= '<form method="post" action="administration.php"/>
				<tr>
				<td>' . $data->identifiant . '</td>
				<td>' . $data->type . '</td>
				<td>
				<button type="submit" onclick="return(confirm(\'Voulez-vous supprimer ce compte ?\'));" class="btn btn-danger">Supprimer</button>
				</td>
				<input type="hidden" name="idUtil" value="' . $data->identifiant . '"/>
				</tr>
				</form>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Permet de supprimer le compte de l'utilisateur sélectionné
function supp_compte($id) {
	global $connexion;
	$requete = 'DELETE FROM utilisateurs WHERE identifiant="' . $id . '";';
	/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
}

// Permet d'ajouter un utilisateur
function add_util($id, $mdp, $type) {
	global $connexion;
	$requete = 'SELECT * FROM utilisateurs WHERE identifiant = "' . $id . '";';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	// Si il y a un utilisateur avec le même nom, on ne l'ajoute pas (erreur)
	if ($result->fetch ()) {
		echo '<script type="text/javascript">alert(\'Ajout impossible. Identifiant d\351j\340 existant\');</script>';
	} else {
		$requete2 = 'INSERT INTO utilisateurs VALUES(NULL,"' . $id . '","' . sha1 ( $mdp ) . '","' . $type . '");';
		/* renvoie du résultat de la requête */
		$connexion->exec ( $requete2 );
	}
	$result->closeCursor ();
}

// gestTypes.php

// Permet de lister tous les types de licences
function gest_licences() {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, libelle FROM licence_types;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de l'enregistrement en cours
			$vretour .= '<form method="post" action="gestTypes.php"/>
				<tr>
				<td>' . $data->id . '</td>
				<td>' . $data->libelle . '</td>
				<td>
				<button type="submit" class="btn btn-danger">Supprimer</button>
				</td>
				<input type="hidden" name="typeLic" value="' . $data->libelle . '"/>
				</tr>
				</form>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Permet de supprimer la licence sélectionnée
function supp_licence($name) {
	global $connexion;
	$requete = 'DELETE FROM licence_types WHERE libelle="' . $name . '";';
	/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
}

// Permet d'ajouter une licence
function add_licence($id, $lib) {
	global $connexion;
	$requete = 'SELECT * FROM licence_types WHERE libelle = "' . $lib . '" OR id="' . $id . '";';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	// On vérifie qu'il n'y a pas deux index ou deux noms de licence égaux
	if ($result->fetch ())
		echo '<script type="text/javascript">alert(\'Ajout impossible. Licence ou index d\351j\340 existant\');</script>';
	else {
		$requete = 'INSERT INTO licence_types VALUES("' . $id . '","' . $lib . '");';
		/* renvoie du résultat de la requête */
		$connexion->exec ( $requete );
	}
	$result->closeCursor ();
}

// changePwd.php

// Permet de changer le mot de passe sur un compte admin
function change_pwd($login, $a_mdp, $n_mdp, $cn_mdp) {
	global $connexion;
	$requete = 'SELECT password FROM utilisateurs WHERE identifiant="' . $login . '";';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	while ( $data = $result->fetch () ) {
		if ($data->password == sha1 ( $a_mdp )) {
			if ($n_mdp == $cn_mdp) {
				$requete = 'UPDATE utilisateurs SET password = "' . sha1 ( $n_mdp ) . '" WHERE identifiant = "' . $login . '";';
				/* renvoie du résultat de la requête */
				$connexion->exec ( $requete );
				// La différence est ici : la redirection ne se fait pas sur la même page
				header ( 'Location: administration.php' );
			} else {
				echo '<script type="text/javascript">alert(\'Modification impossible. Les nouveaux mots de passe sont diff\351rents\');</script>';
			}
		} else {
			echo '<script type="text/javascript">alert(\'Mot de passe incorrect\');</script>';
		}
	}
	$result->closeCursor ();
}

// Permet de changer le mot de passe sur un compte dev
function change_pwdDev($login, $a_mdp, $n_mdp, $cn_mdp) {
	global $connexion;
	$requete = 'SELECT password FROM utilisateurs WHERE identifiant="' . $login . '";';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	while ( $data = $result->fetch () ) {
		if ($data->password == sha1 ( $a_mdp )) {
			if ($n_mdp == $cn_mdp) {
				$requete = 'UPDATE utilisateurs SET password = "' . sha1 ( $n_mdp ) . '" WHERE identifiant = "' . $login . '";';
				/* renvoie du résultat de la requête */
				$connexion->exec ( $requete );
				// La différence est ici : la redirection ne se fait pas sur la même page
				header ( 'Location: gestClients.php' );
			} else {
				echo '<script type="text/javascript">alert(\'Modification impossible. Les nouveaux mots de passe sont diff\351rents\');</script>';
			}
		} else {
			echo '<script type="text/javascript">alert(\'Mot de passe incorrect\');</script>';
		}
	}
	$result->closeCursor ();
}

// addClients.php

// Permet de lister tous les types de licences dans une listbox
function type_lic() {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, libelle FROM licence_types;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= "<option value=0>Aucun résultat</option>";
	} else {
		while ( $data = $result->fetch () ) { // on parcourt toutes les lignes une par une
			$vretour .= "<option value=" . $data->id . ">" . $data->libelle . "</option>";
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// gestClients.php

// Permet de lister tous les praticiens avec leurs licences (admin)
function gest_cabinet() {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT c.id, c.Nom, Telephone, CONCAT( Nvoie,  " ", Lvoie,  " ", CP,  " ", Ville,  " ", PAYS ) AS adresse, COUNT( p.id ) 
FROM cabinet c
INNER JOIN praticiens p ON c.id = p.idCabinet
GROUP BY c.id;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			if($data->adresse=="0       FRANCE")$adresse="Non Renseigné";
			else$adresse=$data->adresse;
			// on affiche les informations de chaque lignes de retour
			$vretour .= '<form method="post" action="editCabinet.php"/>
						<tr id=Cabinet' . $data->id . ' class="active cabinet">
	        			<td ><h4><small class="text-left">Cabinet: </small>' . $data->Nom . '</h4></td>
	        			<td>' . $data->Telephone . '</td>
	        			<td colspan=3 maxlength="10 ">' . $adresse . '</td>
	        			<td>' . desktop_cab ( $data->id ) . '
	        			' . mobile_cab ( $data->id ) . '
	        			' . mobilehd_cab ( $data->id ) . '</td>
						<input type="hidden" name="idCab" value="' . $data->id . '"/>
	        			<td><button type="submit" class="btn btn-primary">Editer</button></td>
						</tr>
						</form>' . gest_praticiens ( $data->id );
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function gest_praticiens($idCabinet) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, nom, prenom FROM praticiens WHERE idCabinet=' . $idCabinet . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		if ($result->rowCount () > 0) {
			$vretour .= '<tr class="bs-docs-section info praticien praticienCabinet' . $idCabinet . '" id=' . $result->fetch ()->id . '>
							<th>#</th>
							<th>Nom</th>
							<th>Pr&eacutenom</th>
							<th>Oremia Desktop</th>
							<th>Oremia Mobile</th>
							<th>Oremia Mobile HD</th>
							<th>&nbsp;</th>
						</tr>';
			$result->closeCursor ();
			$result = $connexion->query ( $requete );
			while ( $data = $result->fetch ( PDO::FETCH_OBJ ) ) {
				// on affiche les informations de chaque lignes de retour
				$vretour .= '
						
						<tr class="bs-docs-section info praticien praticienCabinet' . $idCabinet . '" id=' . $data->id . '>
						<form method="post" action="editClients.php"  >
	        			<td>' . $data->id . '</td>
	        			<td>' . $data->nom . '</td>
	        			<td>' . $data->prenom . '</td>
	        			<td>' . desktop ( $data->id ) . '</td>
	        			<td>' . mobile ( $data->id ) . '</td>
	        			<td>' . mobilehd ( $data->id ) . '</td>
						<input type="hidden" name="idPrat" value="' . $data->id . '"/>
	        			<td><button type="submit" class="btn btn-primary">Editer</button></td>
						</form>
						</tr>
						';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function gestlistcabinet() {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT * FROM cabinet;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			$vretour .= '<li>
                <a href="#Cabinet' . $data->id . '">' . $data->Nom . '</a>
                <ul class="nav">
                    ' . getlistpraticiens ( $data->id ) . '
                </ul>
            </li>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function getlistpraticiens($idCabinet) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, nom, prenom FROM praticiens WHERE idCabinet=' . $idCabinet . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			$vretour .= '<li><a href="#' . $data->id . '">' . $data->nom . ' ' . $data->prenom . '</a></li>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}
// Permet de vérifier les licences desktop
function desktop($id) {
	global $connexion;
	$now = date ( 'Y-m-d' );
	// Par défaut il n'a pas de licence
	$vretour = '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />';
	$requete = 'SELECT idpraticien, date_fin FROM licences WHERE idpraticien = "' . $id . '" AND idlicence_type LIKE "1%";';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	if ($result) {
		$result->setFetchMode ( PDO::FETCH_OBJ );
		while ( $data = $result->fetch () ) {
			if ($now < $data->date_fin) {
				$date = str_replace ( '-', '/', $data->date_fin );
				// Si il y a un résultat, et que la date de validité est supérieure à la date du jour
				$vretour = '<img src="styles/img/ok.gif" border="0" title ="Valide jusqu\'au ' . date ( 'd/m/Y', strtotime ( $date ) ) . '" />';
			} else {
				// Si il y a un résultat, mais que la date de validité est dépassée
				$vretour = '<img src="styles/img/orange.gif" border="0" title ="Licence expir&eacute;e" />';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Permet de vérifier les licences iPhone
function mobile($id) {
	global $connexion;
	$now = date ( 'Y-m-d' );
	// Par défaut il n'a pas de licence
	$vretour = '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />';
	$requete = 'SELECT idpraticien, date_fin FROM licences WHERE idpraticien = "' . $id . '" AND idlicence_type LIKE "2%";';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	if ($result) {
		$result->setFetchMode ( PDO::FETCH_OBJ );
		while ( $data = $result->fetch () ) {
			if ($now < $data->date_fin) {
				$date = str_replace ( '-', '/', $data->date_fin );
				// Si il y a un résultat, et que la date de validité est supérieure à la date du jour
				$vretour = '<img src="styles/img/ok.gif" border="0" title ="Valide jusqu\'au ' . date ( 'd/m/Y', strtotime ( $date ) ) . '" />';
			} else {
				// Si il y a un résultat, mais que la date de validité est dépassée
				$vretour = '<img src="styles/img/orange.gif" border="0" title ="Licence expir&eacute;e" />';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Permet de vérifier les licences iPad
function mobilehd($id) {
	global $connexion;
	$now = date ( 'Y-m-d' );
	// Par défaut il n'a pas de licence
	$vretour = '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />';
	$requete = 'SELECT idpraticien, date_fin FROM licences WHERE idpraticien = "' . $id . '" AND idlicence_type LIKE "3%";;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	if ($result) {
		$result->setFetchMode ( PDO::FETCH_OBJ );
		while ( $data = $result->fetch () ) {
			if ($now < $data->date_fin) {
				$date = str_replace ( '-', '/', $data->date_fin );
				// Si il y a un résultat, et que la date de validité est supérieure à la date du jour
				$vretour = '<img src="styles/img/ok.gif" border="0" title ="Valide jusqu\'au ' . date ( 'd/m/Y', strtotime ( $date ) ) . '" />';
			} else {
				// Si il y a un résultat, mais que la date de validité est dépassée
				$vretour = '<img src="styles/img/orange.gif" border="0" title ="Licence expir&eacute;e" />';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function desktop_cab($id) {
	global $connexion;
	$now = date ( 'Y-m-d' );
	// Par défaut il n'a pas de licence
	$vretour = '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />';
	$requete = 'SELECT idCab, date_fin
FROM licences
WHERE idCab ="'.$id.'"
AND idlicence_type LIKE  "1%"
GROUP BY idCab;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	if ($result) {
		$result->setFetchMode ( PDO::FETCH_OBJ );
		while ( $data = $result->fetch () ) {
			if ($now < $data->date_fin) {
				$date = str_replace ( '-', '/', $data->date_fin );
				// Si il y a un résultat, et que la date de validité est supérieure à la date du jour
				$vretour = '<img src="styles/img/ok.gif" border="0" title ="Valide jusqu\'au ' . date ( 'd/m/Y', strtotime ( $date ) ) . '" />';
			} else {
				// Si il y a un résultat, mais que la date de validité est dépassée
				$vretour = '<img src="styles/img/orange.gif" border="0" title ="Licence expir&eacute;e" />';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Permet de vérifier les licences iPhone
function mobile_cab($id) {
	global $connexion;
	$now = date ( 'Y-m-d' );
	// Par défaut il n'a pas de licence
	$vretour = '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />';
	$requete = 'SELECT idCab, date_fin
FROM licences
WHERE idCab ="'.$id.'"
AND idlicence_type LIKE  "2%"
GROUP BY idCab;;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	if ($result) {
		$result->setFetchMode ( PDO::FETCH_OBJ );
		while ( $data = $result->fetch () ) {
			if ($now < $data->date_fin) {
				$date = str_replace ( '-', '/', $data->date_fin );
				// Si il y a un résultat, et que la date de validité est supérieure à la date du jour
				$vretour = '<img src="styles/img/ok.gif" border="0" title ="Valide jusqu\'au ' . date ( 'd/m/Y', strtotime ( $date ) ) . '" />';
			} else {
				// Si il y a un résultat, mais que la date de validité est dépassée
				$vretour = '<img src="styles/img/orange.gif" border="0" title ="Licence expir&eacute;e" />';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Permet de vérifier les licences iPad
function mobilehd_cab($id) {
	global $connexion;
	$now = date ( 'Y-m-d' );
	// Par défaut il n'a pas de licence
	$vretour = '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />';
	$requete = 'SELECT idCab, date_fin
FROM licences
WHERE idCab ="'.$id.'"
AND idlicence_type LIKE  "3%"
GROUP BY idCab;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	if ($result) {
		$result->setFetchMode ( PDO::FETCH_OBJ );
		while ( $data = $result->fetch () ) {
			if ($now < $data->date_fin) {
				$date = str_replace ( '-', '/', $data->date_fin );
				// Si il y a un résultat, et que la date de validité est supérieure à la date du jour
				$vretour = '<img src="styles/img/ok.gif" border="0" title ="Valide jusqu\'au ' . date ( 'd/m/Y', strtotime ( $date ) ) . '" />';
			} else {
				// Si il y a un résultat, mais que la date de validité est dépassée
				$vretour = '<img src="styles/img/orange.gif" border="0" title ="Licence expir&eacute;e" />';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Permet de lister tous les praticiens avec leurs licences (dev : que les licences mobiles et pas de n° de prat)
function gest_praticiensDev() {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, nom, prenom FROM praticiens;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			if (mobile ( $data->id ) != '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />' || mobilehd ( $data->id ) != '<img src="styles/img/nok.gif" border="0" title ="Pas de licence pour ce client" />') {
				$vretour .= '<tr>
	        			<td>' . $data->nom . '</td>
	        			<td>' . $data->prenom . '</td>
	        			<td>' . mobile ( $data->id ) . '</td>
	        			<td>' . mobilehd ( $data->id ) . '</td>
						</tr>';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// editClients.php

// Pour mettre a jour le nom et prenom du prat (+ un quota de SMS)
function edit_praticiens_info($id) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, nom, prenom FROM praticiens WHERE id=' . $id . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour = '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			$vretour = '<td>' . $data->id . '</td>
						<input type="hidden" name="idPratEdit" value="' . $data->id . '"/>
  						<td class="input-date"><input type="text" value="' . $data->nom . '" id="nomPratEdit" name="nomPratEdit"></td>
  						<td class="input-date"><input type="text" value="' . $data->prenom . '" id="prenomPratEdit" name="prenomPratEdit"></td>';
			// <td class="input-date"><input type="text" value="'.getQuota($data->id).'" id="quotaSmsPratEdit" name="quotaSmsPratEdit"></td>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Pour afficher les licences du prat en cours
function edit_praticiens_licences($id) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT t.id, t.libelle, l.date_fin, l.idpraticien FROM licence_types t INNER JOIN licences l ON t.id=l.idlicence_type WHERE l.idpraticien=' . $id . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			$date = str_replace ( '-', '/', $data->date_fin );
			$vretour .= '<form method="post" action="editClients.php"/>
						<tr>
	        			<td>' . $data->id . '</td>
	        			<td>' . $data->libelle . '</td>';
			// Si la date est nulle, on n'affiche pas de date
			if ($data->date_fin == NULL) {
				$vretour .= '<td class="input-date"><input type="text" value="" id="dateLicEdit" placeholder="jj/mm/aaaa" name="dateLicEdit"></td>
								<td><button type="submit" name="ModifLic" class="btn btn-primary">Modifier</button></td>
								<td><button type="submit" name="Del" class="btn btn-danger">Supprimer</button></td>
							</tr>
							<input type="hidden" name="idLic" value="' . $data->id . '"/>
							<input type="hidden" name="idPratEdit" value="' . $data->idpraticien . '"/>
							</form>';
			} else {
				// Si la date n'est pas nulle, on affiche la date du la BDD
				$vretour .= '<td class="input-date"><input type="text" value="' . date ( 'd/m/Y', strtotime ( $date ) ) . '" placeholder="jj/mm/aaaa" id="dateLicEdit" name="dateLicEdit"></td>
								<td><button type="submit" name="ModifLic" class="btn btn-primary">Modifier</button></td>
								<td><button type="submit" name="Del" class="btn btn-danger">Supprimer</button></td>
							</tr>
							<input type="hidden" name="idLic" value="' . $data->id . '"/>
							<input type="hidden" name="idPratEdit" value="' . $data->idpraticien . '"/>
							</form>';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Pour mettre à jour les infos de télétrans
function edit_praticiens_adeli($id) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT num_adeli, cle_licence, date_fin FROM praticiens WHERE id=' . $id . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour = '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de l'enregistrement en cours
			$date = str_replace ( '-', '/', $data->date_fin );
			
			$vretour = '<td class="input-date"><input type="text" value="' . $data->num_adeli . '" id="adeliPratEdit" name="adeliPratEdit"></td>
  						<td class="input-date"><input type="text" value="' . $data->cle_licence . '" id="clePratEdit" name="clePratEdit"></td>';
			if ($data->date_fin == NULL) {
				// Si la date est nulle, on n'affiche pas de date
				$vretour .= '<td class="input-date"><input type="text" value="" placeholder="jj/mm/aaaa" id="datePratEdit" name="datePratEdit"></td>';
			} else {
				// Si la date n'est pas nulle, on affiche la date du la BDD
				$vretour .= '<td class="input-date"><input type="text" value="' . date ( 'd/m/Y', strtotime ( $date ) ) . '" placeholder="jj/mm/aaaa" id="datePratEdit" name="datePratEdit"></td>';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function modif_Prat($id, $nom, $prenom, $adeli, $cle, $date) {
	global $connexion;
	$datef = str_replace ( '/', '-', $date );
	// Enlever les commentaires si null dans les fichiers "check", le null du num_adeli et de la cle_licence fonctionne
	/*
	 * if($adeli == "")
	 * $requete = 'UPDATE praticiens SET nom = "'.$nom.'", prenom = "'.$prenom.'", num_adeli = NULL, cle_licence = "'.$cle.'", date_fin = "'.date('Y-m-d', strtotime($datef)).'" WHERE id = '.$id.';';
	 * else if($cle == "")
	 * $requete = 'UPDATE praticiens SET nom = "'.$nom.'", prenom = "'.$prenom.'", num_adeli = "'.$adeli.'", cle_licence = NULL, date_fin = "'.date('Y-m-d', strtotime($datef)).'" WHERE id = '.$id.';';
	 * else
	 */
	if ($date == "")
		$requete = 'UPDATE praticiens SET nom = "' . $nom . '", prenom = "' . $prenom . '", num_adeli = "' . $adeli . '", cle_licence = "' . $cle . '", date_fin = NULL WHERE id = ' . $id . ';';
		/*
	 * else if($adeli == "" && $cle == "")
	 * $requete = 'UPDATE praticiens SET nom = "'.$nom.'", prenom = "'.$prenom.'", num_adeli = NULL, cle_licence = NULL, date_fin = "'.date('Y-m-d', strtotime($datef)).'" WHERE id = '.$id.';';
	 * else if($adeli == "" && $date == "")
	 * $requete = 'UPDATE praticiens SET nom = "'.$nom.'", prenom = "'.$prenom.'", num_adeli = NULL, cle_licence = "'.$cle.'", date_fin = NULL WHERE id = '.$id.';';
	 * else if($cle == "" && $date == "")
	 * $requete = 'UPDATE praticiens SET nom = "'.$nom.'", prenom = "'.$prenom.'", num_adeli = "'.$adeli.'", cle_licence = NULL, date_fin = NULL WHERE id = '.$id.';';
	 * else if($adeli == "" && $cle == "" && $date == "")
	 * $requete = 'UPDATE praticiens SET nom = "'.$nom.'", prenom = "'.$prenom.'", num_adeli = NULL, cle_licence = NULL, date_fin = NULL WHERE id = '.$id.';';
	 */
	else
		$requete = 'UPDATE praticiens SET nom = "' . $nom . '", prenom = "' . $prenom . '", num_adeli = "' . $adeli . '", cle_licence = "' . $cle . '", date_fin = "' . date ( 'Y-m-d', strtotime ( $datef ) ) . '" WHERE id = ' . $id . ';';
		/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
}

// Pour supprimer le prat en cours
function supp_Prat($id) {
	global $connexion;
	$requete = 'DELETE FROM praticiens WHERE id="' . $id . '";';
	/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
	header ( 'Location: gestClients.php' );
}

// Por ajouter une licence au prat en cours
function ajout_Lic($idp, $idl) {
	global $connexion;
	$requete = 'SELECT * FROM licences WHERE idpraticien = "' . $idp . '" AND idlicence_type="' . $idl . '";';
	$requeteSel = 'SELECT idCabinet FROM praticiens WHERE id = ' . $idp . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$cabinet = $connexion->query ( $requeteSel );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if ($result->fetch ())
		echo '<script type="text/javascript">alert(\'Ajout impossible. Le praticien a d\351j\340 cette licence\');</script>';
	else {
		// On mett comme date de validité par défaut 1 an à partir de la date du jour
		$datefin = mktime ( 0, 0, 0, date ( "m" ), date ( "d" ), date ( "Y" ) + 1 );
		$now = date ( 'Y-m-d', $datefin );
		$requete = 'INSERT INTO licences VALUES("' . $idp . '","' . $cabinet->fetch()['idCabinet'] . '","' . $idl . '","' . $now . '");';
		/* renvoie du résultat de la requête */
		$connexion->exec ( $requete );
	}
	$result->closeCursor ();
	$cabinet->closeCursor ();
}
function ajout_Lic_Cab($idc, $idl) {
	global $connexion;
	$vretour;
	$requete = 'SELECT * FROM licences WHERE idCab = "' . $idc . '" AND idlicence_type="' . $idl . '";';
	$requeteSelect = 'SELECT * from praticiens WHERE idCabinet=:idCab';
	$requeteInsert = 'INSERT INTO licences VALUES(:idPrat, :idCab, :idLic, :date_fin);';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$reqSel = $connexion->prepare ( $requeteSelect );
	$reqIns = $connexion->prepare ( $requeteInsert );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if ($result->fetch ())
		$vretour = pop_up_Alert ( "Licence déjà affecté à ce cabinet" );
	else {
		$reqSel->execute ( array (
				":idCab" => $idc 
		) );
		if ($reqSel->rowCount () > 0) {
			// On mett comme date de validité par défaut 1 an à partir de la date du jour
			$datefin = mktime ( 0, 0, 0, date ( "m" ), date ( "d" ), date ( "Y" ) + 1 );
			$now = date ( 'Y-m-d', $datefin );
			while ( $row = $reqSel->fetch () ) {
				$reqIns->execute ( array (
						":idPrat" => $row ['id'],
						":idCab" => $idc,
						":idLic" => $idl,
						":date_fin" => $now 
				) );
			}
		} else {
			$vretour = pop_up_Alert ( "Aucun praticiens dans ce cabinet" );
		}
	}
	$result->closeCursor ();
	return $vretour;
}
// Permet de modifier une licence
function modif_Lic($idp, $idl, $date) {
	global $connexion;
	$datef = str_replace ( '/', '-', $date );
	if ($date == "")
		$requete = 'UPDATE licences SET date_fin = NULL WHERE idpraticien = ' . $idp . ' AND idlicence_type = ' . $idl . ';';
	else
		$requete = 'UPDATE licences SET date_fin = "' . date ( 'Y-m-d', strtotime ( $datef ) ) . '" WHERE idpraticien = ' . $idp . ' AND idlicence_type = ' . $idl . ';';
		/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
}
function modif_Lic_Cab($idc, $idl, $date) {
	global $connexion;
	$datef = str_replace ( '/', '-', $date );
	if ($date == "")
		$requete = 'UPDATE licences SET date_fin = NULL WHERE idCab = ' . $idp . ' AND idlicence_type = ' . $idl . ';';
	else
		$requete = 'UPDATE licences SET date_fin = "' . date ( 'Y-m-d', strtotime ( $datef ) ) . '" WHERE idCab = ' . $idc . ' AND idlicence_type = ' . $idl . ';';
		/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
}
// Permet de supprimer une licence
function supp_Lic($idp, $idl) {
	global $connexion;
	$requete = 'DELETE FROM licences WHERE idpraticien = ' . $idp . ' AND idlicence_type = ' . $idl . ';';
	/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
}
function supp_Lic_Cab($idc, $idl) {
	global $connexion;
	$requete = 'DELETE FROM licences WHERE idCab = ' . $idc . ' AND idlicence_type = ' . $idl . ';';
	/* renvoie du résultat de la requête */
	$connexion->exec ( $requete );
}
// Pour obtenir le quota de SMS du prat en cours
function getQuota($id) {
	try {
		$soap = new SoapClient ( "https://www.ovh.com/soapi/soapi-re-1.63.wsdl" );
		
		// login
		$session = $soap->login ( "df44485-ovh", "53aCt5Se", "fr", false );
		// echo "login successfull\n";
		
		// telephonySmsGetUserQuota
		$result = $soap->telephonySmsGetUserQuota ( $session, "sms-df44485-1", "" . $id . "" );
		// echo "telephonySmsGetUserQuota successfull\n";
		return $result; // your code here ...
		                
		// logout
		$soap->logout ( $session );
		// echo "logout successfull\n";
	} catch ( SoapFault $fault ) {
		// echo $fault;
		return 'Erreur';
	}
}

// Pour mettre à jour le quota de SMS du prat en cours
function setQuota($id, $quota) {
	try {
		$soap = new SoapClient ( "https://www.ovh.com/soapi/soapi-re-1.63.wsdl" );
		
		// login
		$session = $soap->login ( "df44485-ovh", "53aCt5Se", "fr", false );
		echo "login successfull\n";
		
		// telephonySmsSetUserQuota
		$soap->telephonySmsSetUserQuota ( $session, "sms-df44485-1", "" . $id . "", "active", "" . $quota . "" );
		echo "telephonySmsSetUserQuota successfull\n";
		
		// logout
		$soap->logout ( $session );
		echo "logout successfull\n";
	} catch ( SoapFault $fault ) {
		echo $fault;
	}
}

// addClients.php

// Permet d'ajouter un prat
function add_prat($nom, $prenom) {
	global $connexion;
	$requete = 'SELECT * FROM praticiens WHERE nom = "' . $nom . '" AND prenom = "' . $prenom . '";';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	// Si il y a un praticien avec le même nom et prénom, on considère que l'ajout est impossible.
	if ($result->fetch ()) {
		echo '<script type="text/javascript">alert(\'Ajout impossible. Praticien d\351j\340 existant\');</script>';
	} else {
		$requete2 = 'INSERT INTO praticiens VALUES(NULL, 0,"' . $nom . '", "' . $prenom . '",  NULL, NULL, NULL);';
		/* renvoie du résultat de la requête */
		$connexion->exec ( $requete2 );
	}
	$result->closeCursor ();
}

// gestSMSClients.php

// Permet de savoir combien il reste de SMS sur le compte
function smsRestant() {
	try {
		$soap = new SoapClient ( "https://www.ovh.com/soapi/soapi-re-1.63.wsdl" );
		
		// login
		$session = $soap->login ( "df44485-ovh", "53aCt5Se", "fr", false );
		// echo "login successfull\n";
		
		// telephonySmsCreditLeft
		$result = $soap->telephonySmsCreditLeft ( $session, 'sms-df44485-1' );
		// echo "telephonySmsCreditLeft successfull\n";
		return $result; // your code here ...
		                
		// logout
		$soap->logout ( $session );
		// echo "logout successfull\n";
	} catch ( SoapFault $fault ) {
		// echo $fault;
		return 'Erreur';
	}
}

// Permet de retourner le nombre de SMS envoyés par prat le mois passé
function nbSmsPratMoisDernier($id) {
	global $connexion;
	$nbsms = 0;
	$moisdernier = date ( 'Ym' );
	$requete = "SELECT NbSMSMoisConcerne FROM gestsmsclients WHERE idPraticien=:id AND MONTH(MoisConcerne)=:mois";
	// echo "telephonySmsHistory successfull\n";
	$nb = $connexion->prepare ( $requete );
	$nb->execute ( array (
			":id" => $id,
			":mois" => date ( 'm', mktime ( 0, 0, 0, date ( 'm' ) - 1, date ( 'd' ), date ( 'Y' ) ) ) 
	) );
	$nbsms = $nb->fetch ();
	return $nbsms ['NbSMSMoisConcerne'];
}

// Permet de retourner le nombre de SMS envoyés par prat ce mois-ci
function nbSmsPratMoisActuel($id) {
	global $connexion;
	$nbsms = 0;
	$moisdernier = date ( 'Ym' );
	$requete = "SELECT NbSMSMoisConcerne FROM gestsmsclients WHERE idPraticien=:id AND MONTH(MoisConcerne)=:mois";
	// echo "telephonySmsHistory successfull\n";
	$nb = $connexion->prepare ( $requete );
	$nb->execute ( array (
			":id" => $id,
			":mois" => date ( 'm', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ), date ( 'Y' ) ) ) 
	) );
	$nbsms = $nb->fetch ();
	return $nbsms ['NbSMSMoisConcerne'];
}
function nbSmsPratMoiscustom($id, $date) {
	global $connexion;
	$nbsms = 0;
	$moisdernier = date ( 'Ym' );
	$requete = "SELECT NbSMSMoisConcerne FROM gestsmsclients WHERE idPraticien=:id AND EXTRACT(YEAR_MONTH FROM MoisConcerne)=:mois ";
	// echo "telephonySmsHistory successfull\n";
	$nb = $connexion->prepare ( $requete );
	$nb->execute ( array (
			":id" => $id,
			":mois" => $date 
	) );
	$nbsms = $nb->fetch ();
	return $nbsms ['NbSMSMoisConcerne'];
}
function TarifSMS($id, $date) {
	global $connexion;
	$nbsms = 0;
	$moisdernier = date ( 'Ym' );
	$requete = "SELECT g.Cout, t.Tarif FROM gestsmsclients g INNER JOIN tarifsms t ON g.idTarif=t.id WHERE g.idPraticien=:id AND EXTRACT(YEAR_MONTH FROM MoisConcerne)=:mois";
	// echo "telephonySmsHistory successfull\n";
	$nb = $connexion->prepare ( $requete );
	$nb->execute ( array (
			":id" => $id,
			":mois" => $date 
	) );
	$nbsms = $nb->fetch ();
	return $nbsms;
}
// Permet de retourner une liste des ID SMS datant de plus de 3 mois
function smsObsoletes() {
	$IDsms = [ ];
	// Mettre le nombre de mois à garder après date('m') (ex : Pour garder 3 mois : date('m')-3)
	$dernierTrimestre = date ( 'Ym', mktime ( 0, 0, 0, date ( 'm' ) - 3, date ( 'd' ), date ( 'Y' ) ) );
	try {
		$soap = new SoapClient ( "https://www.ovh.com/soapi/soapi-re-1.63.wsdl" );
		
		// login
		$session = $soap->login ( "df44485-ovh", "53aCt5Se", "fr", false );
		// echo "login successfull\n";
		
		// telephonySmsHistory
		$result = $soap->telephonySmsHistory ( $session, "sms-df44485-1", "", "", "", "", "", "", "", "" );
		// echo "telephonySmsHistory successfull\n";
		
		for($i = 0; $i < count ( $result ); $i ++) {
			if (substr ( $result [$i]->date, 0, 6 ) < $dernierTrimestre) {
				array_push ( $IDsms, $result [$i]->smsId );
			}
		}
		return $IDsms;
		// return ($i); // your code here ...
		
		// logout
		$soap->logout ( $session );
		// echo "logout successfull\n";
	} catch ( SoapFault $fault ) {
		// echo $fault;
		return 'Erreur';
	}
}

// Permet de supprimer les SMS que retourne la fonction smsObsoletes()
function suppSMS() {
	try {
		$soap = new SoapClient ( "https://www.ovh.com/soapi/soapi-re-1.63.wsdl" );
		
		// login
		$session = $soap->login ( "df44485-ovh", "53aCt5Se", "fr", false );
		// echo "login successfull\n";
		
		// telephonySmsDelete
		$soap->telephonySmsDelete ( $session, "sms-df44485-1", smsObsoletes () );
		echo '<script type="text/javascript">alert("telephonySmsDelete successfull");</script>';
		
		// logout
		$soap->logout ( $session );
		// echo "logout successfull\n";
	} catch ( SoapFault $fault ) {
		echo '<script type="text/javascript">alert("Erreur");</script>';
	}
}

// Permet de lister les SMS utilisés par les praticiens
function gest_praticiensSMS() {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, nom, prenom FROM praticiens;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			if (nbSmsPratMoisDernier ( $data->id ) != 0 || nbSmsPratMoisActuel ( $data->id ) != 0) {
				// on affiche seulement les praticiens ayant utilisé des SMS ce mois-ci ou le mois précédant
				$vretour .= '<form method="post" action="editClients.php"/>
						<tr>
	        			<td>' . $data->id . '</td>
	        			<td>' . $data->nom . '</td>
	        			<td>' . $data->prenom . '</td>
	        			<td>' . nbSmsPratMoisDernier ( $data->id ) . '</td>
	        			<td>' . nbSmsPratMoisActuel ( $data->id ) . '</td>
						<input type="hidden" name="idPrat" value="' . $data->id . '"/>
	        			<td><button type="submit" class="btn btn-primary">Editer compte client</button></td>
						</tr>
						</form>';
				// $vretour.="<script>AppelAjax('999');</script>";
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}

// Retourne le mois et l'année en cours
function moisActuel() {
	return date ( 'm/Y' );
}

// Retourne le mois précédant
function moisDernier() {
	return date ( 'm/Y', mktime ( 0, 0, 0, date ( 'm' ) - 1, date ( 'd' ), date ( 'Y' ) ) );
}
/**
 * ****retourne un mois par défaut si aucun mois n'a été posté**********
 */
function moisSelectionne() {
	$vretour = "rien";
	if (isset ( $_POST ['Month'] ) && isset ( $_POST ['Year'] )) {
		$vretour = $mois = $annee = $_POST ['Year'] . $_POST ['Month'];
	} else {
		$vretour = date ( 'Ym', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ), date ( 'Y' ) ) );
	}
	return $vretour;
}
function gest_FactureSMS() {
	$cpt = 0;
	$totalmois = 0;
	$date = moisSelectionne ();
	global $connexion;
	$vretour = "";
	$requete = 'SELECT id, nom, prenom FROM praticiens;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			
			if (nbSmsPratMoiscustom ( $data->id, $date ) != 0) {
				$cpt ++;
				// on affiche seulement les praticiens ayant utilisé des SMS ce mois-ci ou le mois précédant
				$vretour .= '
						<tr>
	        			<td>' . $data->id . '</td>
	        			<td>' . $data->nom . '</td>
	        			<td>' . $data->prenom . '</td>
	        			<td>' . nbSmsPratMoiscustom ( $data->id, $date ) . '</td>
						<input type="hidden" name="idPrat" value="' . $data->id . '"/>
	        			<td>' . TarifSMS ( $data->id, $date )['Cout'] . ' €</td>
	        			<td>' . TarifSMS ( $data->id, $date )['Tarif'] . ' €/sms</td>
						</tr>
						';
				$totalmois = $totalmois + TarifSMS ( $data->id, $date )['Cout'];
				// $vretour.="<script>AppelAjax('999');</script>";
			}
		}
		$vretour .= '<div class="identification">Total pour le mois: ' . $totalmois . ' Euros</div>';
		if ($cpt == 0) {
			$vretour .= '<tr>Aucun SMS envoyés</tr>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function jsAjoutTarif() {
	return '<script>
			$(document).ready(function() {
				$("#yearpicker").monthpicker({"lang" : "fr","minYear":2014, "maxYear":2020});
				$(".table-striped").hide();
				$(".submit").hide();
				$(".btn-success").click(function(){
					$(".table-striped").show(500);
					$(".submit").show(500);
					month=$(".monthpick").find(":selected").text();
					year=$(".yearpick").find(":selected").text();
					$(".table-striped tbody tr td:nth-child(3)").html("<small>"+month+"/"+year+"</small>");
				});
				$( ".submit" ).click(function() {
					tarif1=$( "input[name=\'tarif1\'] ").val();
					tarif2=$( "input[name=\'tarif2\'] ").val();
					tarif3=$( "input[name=\'tarif3\'] ").val();
					tarif4=$( "input[name=\'tarif4\'] ").val();
					tarif5=$( "input[name=\'tarif5\'] ").val();
					if ( tarif1 == "" || tarif2 == "" ||tarif3 == "" || tarif4 == "" || tarif5 == "") {
						bootbox.alert("Merci de bien vouloir remplir tous les champs.");
					}else{
						if(isNaN(tarif1)||isNaN(tarif2)||isNaN(tarif3)||isNaN(tarif4)||isNaN(tarif5)){
							bootbox.alert("Saisir des données numériques ");
						}else{
							message="Confirmation:<br>99 sms:"+$( "input[name=\'tarif1\'] ").val()+" €/sms<br>199 sms:"+$( "input[name=\'tarif2\'] ").val()+" €/sms<br>499 sms:"+$( "input[name=\'tarif3\'] ").val()+" €/sms<br>999 sms:"+$( "input[name=\'tarif4\'] ").val()+" €/sms<br>1000 sms:"+$( "input[name=\'tarif5\'] ").val()+" €/sms<br>";
							bootbox.confirm(message,function(result){
								if(result){
									$("form").submit();
								}else{
									return;
								}
							});
						}
					}
				});			
			});
		</script>';
}
function AjoutTarif() {
	global $connexion;
	$vretour = '';
	$cpt = 1;
	$requeteInsertDate = 'INSERT INTO datetarif VALUES(null, :date)';
	$requeteSelectId = 'SELECT id FROM datetarif WHERE Date=:date';
	$requeteInsertTarif = 'INSERT INTO tarifsms VALUES(null, :qteSMS, :Tarif, :idDate)';
	$insertDate = $connexion->prepare ( $requeteInsertDate );
	$selectId = $connexion->prepare ( $requeteSelectId );
	$insertTarif = $connexion->prepare ( $requeteInsertTarif );
	$Date = concatDate ( $_POST ['Year'], $_POST ['Month'] );
	$selectId->execute ( array (
			":date" => $Date 
	) );
	if ($selectId->rowCount () >= 1) {
		$vretour = 'Il existe déjà un tarif à appliquer pour ce mois ci';
	} else {
		$insertDate->execute ( array (
				":date" => $Date 
		) );
		$selectId->closeCursor ();
		$selectId->execute ( array (
				":date" => $Date 
		) );
		$Id = $selectId->fetch ();
		while ( isset ( $_POST ['qte' . $cpt] ) ) {
			$insertTarif->execute ( array (
					":qteSMS" => $_POST ['qte' . $cpt],
					":Tarif" => $_POST ['tarif' . $cpt],
					":idDate" => $Id ['id'] 
			) );
			$cpt ++;
		}
		$vretour = '<script>bootbox.alert("Nouveaux tarifs ajoutés avec succès!");</script>';
	}
	return $vretour;
}
function concatDate($year, $month) {
	$vretour = $year . '-' . $month . '-01';
	return $vretour;
}
function afficheTarif() {
	global $connexion;
	$vretour = "";
	$cpt = 0;
	$requeteSelectId = 'SELECT id FROM datetarif';
	$requeteTarif = 'SELECT t.qteSMS, t.tarif, d.Date FROM tarifsms t INNER JOIN datetarif d on t.IdDate=d.id WHERE  IdDate=:idDate;';
	$idDate = $connexion->prepare ( $requeteSelectId );
	$Tarif = $connexion->prepare ( $requeteTarif );
	$idDate->execute ();
	while ( $fetchId = $idDate->fetch () ) {
		$Tarif->execute ( array (
				":idDate" => $fetchId ['id'] 
		) );
		$vretour .= '<form action="GestTarifSMS.php" method="POST">			<div class="table-responsive">
		<table class="table table-striped">
					<thead>
						<tr>
							<th>Mise en place a partir de :</th>
							<th>Quantité SMS</th>
							<th>Tarif</th>
						</tr>
					</thead>
					<tbody>
				';
		while ( $fetchTarif = $Tarif->fetch () ) {
			$vretour .= '<tr>';
			if ($cpt == 0) {
				$vretour .= '<td rowspan="5"><input type="hidden" name="idDate" value="' . $fetchId ['id'] . '"/>' . $fetchTarif ['Date'] . '</td>';
				$cpt = 1;
			}
			$vretour .= '<td>' . $fetchTarif ['qteSMS'] . '</td>
						<td>' . $fetchTarif ['tarif'] . '€/sms</td>
						</tr>';
		}
		$vretour .= '</tbody>
				</table>
				</table>			</div>
				<button type="submit" name="DelAll" class="btn btn-danger">Supprimer les Tarifs</button></form><br>';
		$cpt = 0;
		$Tarif->closeCursor ();
	}
	return $vretour;
}
function suppressionTarif() {
	global $connexion;
	$requeteSuppression = 'DELETE FROM datetarif WHERE id = :id';
	$suppr = $connexion->prepare ( $requeteSuppression );
	if ($suppr->execute ( array (
			":id" => $_POST ['idDate'] 
	) )) {
		$vretour = '<script>bootbox.alert("Tarif Supprimés");</script>';
	} else {
		$vretour = '<script>bootbox.alert("Erreur dans la suppression des tarifs");</script>';
	}
	return $vretour;
}
function affiche_courbe($type) {
	global $connexion;
	$requeteMinMois = 'SELECT EXTRACT(YEAR_MONTH FROM MIN(MoisConcerne)) as moisconcerne FROM gestsmsclients;';
	$requete = 'SELECT id, nom, prenom FROM praticiens;';
	$MoisMin = $connexion->query ( $requeteMinMois )->fetch ();
	$select = $connexion->prepare ( $requete );
	$cpt = 0;
	$nbsmsmois = 0;
	$totalmois = 0.0;
	$break = true;
	while ( $break ) {
		if ($MoisMin ['moisconcerne'] == getMoisCustom ( $cpt )) {
			$break = false;
			break;
		}
		$cpt ++;
	}
	$tarif = array ();
	$nbsms = array ();
	$custumers = array ();
	$vretour = importScript ( "analytics" );
	$vretour .= '<table id="data"><tfoot><tr>';
	for($cpt; $cpt >= 0; $cpt --) {
		$select->execute ();
		if ($select) {
			while ( $data = $select->fetch ( PDO::FETCH_OBJ ) ) {
				if (nbSmsPratMoiscustom ( $data->id, getMoisCustom ( $cpt ) ) != 0) {
					// on affiche seulement les praticiens ayant utilisé des SMS ce mois-ci ou le mois précédant
					$totalmois = $totalmois + TarifSMS ( $data->id, getMoisCustom ( $cpt ) )['Cout'];
					$nbsmsmois = $nbsmsmois + nbSmsPratMoiscustom ( $data->id, getMoisCustom ( $cpt ) );
				}
			}
			array_push ( $nbsms, $nbsmsmois );
			array_push ( $tarif, $totalmois );
			$output [0] = substr ( getMoisCustom ( $cpt ), 0, 4 );
			$output [1] = substr ( getMoisCustom ( $cpt ), 4 );
			$vretour .= '<th>' . $output [1] . '/' . $output [0] . '</th>';
		}
		$select->closeCursor ();
		$totalmois = 0.0;
		$nbsmsmois = 0;
	}
	$vretour .= '</tr></tfoot><tbody><tr>';
	$i = 0;
	if ($type == 1) {
		while ( isset ( $tarif [$i] ) ) {
			$vretour .= '<td>' . $tarif [$i] . '</td>';
			$i ++;
		}
	}
	if ($type == 2) {
		while ( isset ( $nbsms [$i] ) ) {
			$vretour .= '<td>' . $nbsms [$i] . '</td>';
			$i ++;
		}
	}
	$vretour .= '</tr></tbody></table>';
	return $vretour;
}
function statmoisclient() {
	$cpt = 0;
	$totalmois = 0;
	$i = 0;
	$date = moisSelectionne ();
	$nbsms = array ();
	$custumers = array ();
	$percent = array ();
	$vretour = importScript ( "pie" );
	$vretour .= '<table class="pie"><tbody>';
	global $connexion;
	$requete = 'SELECT id, nom, prenom FROM praticiens;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			if (nbSmsPratMoiscustom ( $data->id, $date ) != 0) {
				$cpt ++;
				array_push ( $custumers, $data->nom );
				array_push ( $nbsms, TarifSMS ( $data->id, $date )['Cout'] );
			}
		}
		$percent = getpercent ( $nbsms );
		while ( isset ( $nbsms [$i] ) ) {
			$vretour .= '<tr><th scope="row">' . $custumers [$i] . '</th><td>' . $percent [$i] . '</td></tr>';
			$i ++;
		}
		$vretour .= '</tbody></table>';
		if ($cpt == 0) {
			$vretour .= '<tr>Aucun SMS envoyés</tr>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function getpercent($array) {
	$vretour = array ();
	$total = 0;
	for($i = 0; $i < count ( $array ); $i ++) {
		$total = $total + $array [$i];
	}
	
	for($i = 0; $i < count ( $array ); $i ++) {
		$percent = ($array [$i] / $total) * 100;
		array_push ( $vretour, $percent . '%' );
	}
	return $vretour;
}
function getMoisCustom($value) {
	return date ( 'Ym', mktime ( 0, 0, 0, date ( 'm' ) - $value, date ( 'd' ), date ( 'Y' ) ) );
}
function importScript($which) {
	$vretour = "";
	if ($which == "pie") {
		$vretour = '<script type="text/javascript" src="styles/js/pie.js"></script>';
	}
	if ($which == "analytics") {
		$vretour = '<script type="text/javascript" src="styles/js/analytics.js"></script>';
	}
	return $vretour;
}
function statistique($type) {
	if ($type == 1) {
		$vretour = affiche_courbe ( 1 );
	}
	if ($type == 2) {
		$vretour = affiche_courbe ( 2 );
	}
	if ($type == 3) {
		$vretour = statmoisclient ();
	}
	return $vretour;
}
function AjoutCab($nom, $tel, $Num, $Voie, $cp, $ville, $Pays) {
	global $connexion;
	$vretour = false;
	$requete = 'SELECT * FROM cabinet WHERE nom = "' . $nom . '" ;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$latlong = getLatLong ( $Num . ' ' . $Voie . ' ' . $cp . ' ' . $ville . ' ' . $Pays );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	// Si il y a un praticien avec le même nom et prénom, on considère que l'ajout est impossible.
	if (! $result->fetch () && $latlong != false) {
		$requete2 = 'INSERT INTO cabinet VALUES(NULL, "' . $nom . '", "' . $tel . '", "' . $Num . '", "' . $Voie . '", "' . $cp . '", "' . $ville . '","' . $Pays . '",' . $latlong ["lat"] . ',' . $latlong ["lng"] . ' );';
		/* renvoie du résultat de la requête */
		$connexion->exec ( $requete2 );
		$vretour = true;
	}
	$result->closeCursor ();
	return $vretour;
}
function jsAjoutCab() {
	return '<script>
			$(document).ready(function() {
				$( ".submit" ).click(function() {
					champ1=$( "input[name=\'nomNouvCab\'] ").val();
					champ2=$( "input[name=\'TelNouvCab\'] ").val();
					champ3=$( "input[name=\'Nvoie\'] ").val();
					champ4=$( "input[name=\'Lvoie\'] ").val();
					champ5=$( "input[name=\'CP\'] ").val();
					champ6=$( "input[name=\'Ville\'] ").val();
					if ( champ1 == "" || champ2 == "" ||champ3 == "" || champ4 == "" || champ5 == ""||champ6=="") {
						bootbox.alert("Merci de bien vouloir remplir tous les champs.");
					}else{
							message="Confirmation:<br>Nom Cabinet:"+champ1+"<br>Numéro de téléphone:"+champ2+"<br>Numéro De Voie:"+champ3+"<br>Nom de la rue:"+champ4+"<br>Code postal et Ville"+champ5+"-"+champ6;
							bootbox.confirm(message,function(result){
								if(result){
									$("form").submit();
								}else{
									return;
								}
							});
						
					}
				});
			});
		</script>';
}
function edit_cabinet_info($id) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT * FROM cabinet WHERE id=' . $id . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour = '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			$vretour .= '<td>' . $data->id . '</td>
						<input type="hidden" name="idCabEdit" value="' . $data->id . '"/>
  						<td class="col-md-3" ><input class="form-control" type="text" value="' . $data->Nom . '" id="nomPratEdit" name="nomCabEdit"></td>
  						<td class="col-md-3"><input class="form-control" type="text" value="' . $data->Telephone . '" id="prenomPratEdit" name="telCabEdit"></td>
  						<td class="form-inline col-md-6"><input class="form-control" type="text" value="' . $data->Nvoie . '" id="nomPratEdit" name="NVoieEdit" placeholder="Numéro de Rue"><input class="form-control" type="text" value="' . $data->Lvoie . '"name="LvoieEdit" placeholder="Libelle de Rue"><input class="form-control" type="text" value="' . $data->CP . '"name="CPEdit" placeholder="Code Postal"><input class="form-control" type="text" value="' . $data->Ville . '"name="VilleEdit" placeholder="Ville"><input class="form-control" type="text" value="' . $data->PAYS . '"name="PaysEdit" placeholder="Pays"></td>';
			// <td class="input-date"><input type="text" value="'.getQuota($data->id).'" id="quotaSmsPratEdit" name="quotaSmsPratEdit"></td>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function edit_cabinet_licences($id) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT t.id,  t.libelle, l.date_fin, l.idCab
FROM licence_types t
INNER JOIN licences l ON t.id = l.idlicence_type
WHERE l.idCab =' . $id . ' 
GROUP BY t.id;';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour .= '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			$date = str_replace ( '-', '/', $data->date_fin );
			$vretour .= '<form method="post" action="editCabinet.php"/>
						<tr>
	        			<td>' . $data->id . '</td>
	        			<td>' . $data->libelle . '</td>';
			// Si la date est nulle, on n'affiche pas de date
			if ($data->date_fin == NULL) {
				$vretour .= '<td class="input-date"><input type="text" value="" id="dateLicEdit" placeholder="jj/mm/aaaa" name="dateLicEdit"></td>
								<td><button type="submit" name="ModifLicCab" class="btn btn-primary">Modifier</button></td>
								<td><button type="submit" name="DelCab" class="btn btn-danger">Supprimer</button></td>
							</tr>
							<input type="hidden" name="idLic" value="' . $data->id . '"/>
							<input type="hidden" name="idCabEdit" value="' . $data->idCab . '"/>
							</form>';
			} else {
				// Si la date n'est pas nulle, on affiche la date du la BDD
				$vretour .= '<td class="input-date"><input type="text" value="' . date ( 'd/m/Y', strtotime ( $date ) ) . '" placeholder="jj/mm/aaaa" id="dateLicEdit" name="dateLicEdit"></td>
								<td><button type="submit" name="ModifLicCab" class="btn btn-primary">Modifier</button></td>
								<td><button type="submit" name="DelCab" class="btn btn-danger">Supprimer</button></td>
							</tr>
							<input type="hidden" name="idLic" value="' . $data->id . '"/>
									<input type="hidden" name="idCabEdit" value="' . $data->idCab . '"/>
							</form>';
			}
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function modif_Cab($id, $nom, $tel, $Nvoie, $Lvoie, $CP, $Ville, $Pays) {
	global $connexion;
	$requete = 'UPDATE cabinet SET Nom = "' . $nom . '", Telephone = "' . $tel . '", Nvoie = "' . $Nvoie . '", Lvoie = "' . $Lvoie . '", CP = "' . $CP . '", Ville = "' . $Ville . '", PAYS="' . $Pays . '" WHERE id = ' . $id . ';';
	$connexion->exec ( $requete );
	return pop_up_Alert ( 'Cabinet bien modifié' );
}
function pop_up_Alert($msg) {
	return '<script>bootbox.alert("' . $msg . '")</script>';
}
function Prat_cabinet($id) {
	global $connexion;
	$vretour = "";
	$requete = 'SELECT * FROM praticiens WHERE idCabinet=' . $id . ';';
	/* renvoie du résultat de la requête */
	$result = $connexion->query ( $requete );
	$result->setFetchMode ( PDO::FETCH_OBJ );
	if (! $result) {
		$vretour = '<tr>Aucune licence trouvée</tr>';
	} else {
		while ( $data = $result->fetch () ) {
			// on affiche les informations de chaque lignes de retour
			$vretour .= '<tr><td>' . $data->id . '</td>
						<input type="hidden" name="idPratAdd" value="' . $data->id . '"/>
  						<td class="col-md-3" >' . $data->nom . '</td>
  						<td class="col-md-3">' . $data->prenom . '</td></tr>';
		}
	}
	$result->closeCursor ();
	return $vretour;
}
function AddToCab($idPrat, $idCab) {
	global $connexion;
	$requete = 'UPDATE praticiens SET idCabinet="' . $idCab . '" WHERE id = ' . $idPrat . ';';
	$connexion->exec ( $requete );
	return pop_up_Alert ( 'Praticien bien ajouté au cabinet' );
}
function getLatLong($adresse) {
	sleep ( 1 );
	$coords = array ();
	$base_url = "http://maps.googleapis.com/maps/api/geocode/xml?";
	// ajouter &region=FR si ambiguité (lieu de la requete pris par défaut)
	$request_url = $base_url . "address=" . urlencode ( $adresse ) . '&sensor=false';
	$xml = simplexml_load_file ( $request_url ) or die ( "url not loading" );
	$coords ['lat'] = $coords ['lon'] = '';
	$coords ['status'] = $xml->status;
	if ($coords ['status'] == 'OK') {
		$latitude = $xml->result->geometry->location->lat;
		$longitude = $xml->result->geometry->location->lng;
		$vretour = array (
				"lat" => $latitude,
				"lng" => $longitude 
		);
	} else if ($coords ['status'] == 'OVER_QUERY_LIMIT') {
		sleep ( 5 );
		getLatLong ( $adresse );
		return;
	} else {
		$vretour = false;
	}
	return $vretour;
}
?>